"""
# -*- coding: utf-8 -*-

Created on 2021/5/25 18:15

@File: extract_from_data.py
@Author: LT
@Description: 从已校验好的excel表格中提取数据以备新建站点使用
"""
import os
from .examine_data import Examination

os.chdir(os.path.dirname(os.path.realpath(__file__)))           # 这里用了改变路径来替代了os.path.join的方法


class ExcelDataExtractor(Examination):
    """将excel表格里的数据提取成一个列表，每个元素是个json的数据"""
    def __init__(self):
        Examination.__init__(self)                              # 直接在构造的时候，进行格式内容的校验
        self.work_sheet = self.wb[self.target_sheet_name]
        self.data_list = self.__extractor()                     # 如果之前检验不合格，就不会到这一步的

    def __extractor(self):
        res_list = []

        def make_title_list():
            """做一个表头字典，默认值全为None"""
            res = []
            for each_title in [row for row in self.work_sheet.rows][0]:
                res.append(each_title.value)

            return res

        def row_content_generator():
            for row_generator in self.work_sheet.iter_rows(min_row=2,                            # 这个最小行必须为2，因为不能光有表头
                                                           max_row=self.work_sheet.max_row,
                                                           max_col=self.work_sheet.max_column):
                yield row_generator

        title_list = make_title_list()

        # 然后用行迭代器与表头列表结合成一个字典
        for row_content in row_content_generator():
            temp_list = [each.value for each in row_content]
            temp_dict = dict(zip(title_list, temp_list))

            # 将每行的结果append到 res_list 中
            res_list.append(temp_dict)

        return res_list
